package com.ato.Thread;

/**
 * @author wangjing
 * @create 2021--09--11--13:17
 */
public class ThreadTest {
    public static void main(String[] args) {
//            主线程中创建
        ThreadCreateMethodsOne thread1 = new ThreadCreateMethodsOne();
        /**
         * 注意：如果这里不是用的start() 那么他就是按照顺序执行，先执行run里面的，在执行 下面的，但是用了start() 则是根据电脑核心来调
         * 一个线程只能start()调用一次，会报异常，解决：在new 一个线程
         */
//        thread1.start();
//        thread1.setPriority();

        for (int i = 0; i < 10000; i++) {
            if (i % 2 == 0) {
                System.out.println(Thread.currentThread().getName() + i);
            }
        }
    }
}

//创建方法1
class ThreadCreateMethodsOne extends Thread {
    static Object obj = new Object();

    @Override
    public void run() {

        // 该线程具体要执行的操作：数字小了会无法体现：一核就完成了计算，
        for (int i = 0; i < 10000; i++) {
            if (i % 2 == 0) {
                System.out.println(Thread.currentThread().getName() + i);
            }
        }

    }

    private static synchronized void syncMethods() {
        System.out.println("处理共享数据");
    }
}

class A {
    private A() {
    }

    private static A instance = null;

    public static A getInstance() {
        if (instance == null) {
            synchronized (A.class) {
                if (instance == null) {
                    instance = new A();
                }
            }
        }
        return instance;
    }
}